DeviceNet主站操作手册


新建工程

本文主要描述如何使用中科时代DeviceNet主站连接从站设备。

1. 安装设备描述文件

单击工具 ➔设备存储库 ➔ 安装

导入厂商提供的Eds文件。

2.扫描从站

右击主站,单击扫描设备

稍等一段时间,在弹出的界面中显示扫描到的从站列表。

点击智能拷贝;设备添加到工程中。

3.下装运行

  1. 首先,连接到工智机设备。输入工智机IP地址,输入回车符。

如果状态图标显示为绿色,且IP地址后提示激活的;表示连接成功。

如果工程发生了变更,则会提示登录选项,新工程直接下装运行。

登录成功后可以看到工程的运行状态。

配置页面说明

主站配置页面

1.1 【通用】页面

1.2 【诊断】页面

总线状态:实时更新总线状态

主站状态:出现此类错误后,需要排查现场设备,重新下装。

从站状态:实时更新从站状态

从站配置页面

2.1 【通用】页面

2.2 【连接】页面

消息类型: 只支持【轮询】,从站如果选择了其他连接方式,会在诊断页面报错不支持的连接

双击表格区域,可以编辑连接详细信息。

  1. PRI(ms):可为每个从站配置独立的轮询周期,即IO交换周期,单位毫秒。

  2. 连接入口:下拉框显示EDS文件中列出的可选配置文本名称,也可以选择【自定义】来自由编辑连接路径和字节数大小

  3. 路径:要下发给从站的输入/输出的具体路径(路径字段具体含义,请查询Devicenet协议文档)。

    注意:如果路径填空值,则表示不下发IO配置,运行时从从站读取实际路径。扫描智能拷贝添加的从站默认不下发IO配置。

  4. 输入/输出大小(字节):告知此从站的IO字节数大小。需要与当前配置的路径一致,如果字节数大小不匹配,运行时,会在诊断页面报错**【无效IO大小

2.3 【用户参数】页面

  1. 如果从站EDS文件中包含下发参数,则该页面显示当前的下发参数,否则显示空。

  2. 支持修改参数值: 首先要停止运行工程,双击值进行修改,选中该参数,点击保存按钮。工程下装并运行时,会将此参数值下发到从站中。

注意: 有些参数需要从站断电重启才会生效

2.4 【只读参数】页面

  1. 如果从站EDS文件中包含只读参数,则该页面显示当前的只读参数值,否则显示空。

2.5 【诊断】页面

配置故障: 出现此类错误后,需要排查现场设备问题,重新下装。

  1. 无效的连接路径: 显示红色表示配置的路径不合法。

  2. 无效I0大小: 【连接】页面输入的IO字节大小与实际读到的大小不一致时,会显示此错误,需修改并重新下装。

  3. 不支持的连接: 【连接】页面中配置的连接方式不是【轮询】

  4. 身份不匹配: 当前配置的从站供应商编码、产品类型、产品编号与实际读到的不一致。

  5. 其他配置错误: 提示出现的其他配置错误

运行故障: 实时显示运行过程中的一些故障状态

  1. 远程I0通信运行: 显示绿色表示从站在正常运行,否则表示通讯失败。

  2. 接收到无效的IO封包: 显示红色表示在运行的过程中接收到不正确的I0数据包

  3. 设置通讯循环时间失败: 显示红色表示设置从站的RPI失败。

PLC编程

提供了两个2个PLC函数用于获取主站和从站的状态。

获取主站状态

1.1 输出


VAR_OUTPUT
   status:ST_DNetMasterStatus; 
   bError : BOOL;
END_VAR

名称 类型 描述
status ST_DNetMasterStatus 主站的运行状态
bError BOOL 函数执行是否报错

1.2 ST_DNetMasterStatus 主站状态结构体,字段如下:

字段 类型 说明
total_slave_num USINT 已配置的从站数量
error_slave_num USINT 运行异常的从站数量
running_slave_num USINT IO通讯正常的从站数量
bus_off BOOL 总线是否断开
no_bus_power BOOL 网络电源异常
receive_failed BOOL 接收错误
send_failed BOOL 发送错误
config_error BOOL 配置错误
duplicate_mac_id BOOL mac地址重复
memory_alloc_error BOOL 内存分配错误
io_running BOOL 至少有一个从站正常通讯
comm_error BOOL 至少有一个从站通讯错误

1.3 示例

PROGRAM PLC_PRG
VAR
   bError: BOOL;
   tMasterStatus: ST_DNetMasterStatus;
END_VAR
GetMasterStatus(status=>tMasterStatus,bError=>bError);
  1. 获取所有从站状态

2.1 输入

VAR_INPUT
    pStatus: POINTER TO ARRAY[0..63] OF ST_DNetSlaveStatus;
    cbBufLen: UDINT;
END_VAR
名称 类型 描述
pStatus POINTER TO ARRAY[0..63] OF ST_DNetSlaveStatus 所有从站状态
cbBufLen UDINT pStatus缓存区的字节数大小. 至少为实际从站数量*10个字节.

2.2 输出

VAR_OUTPUT
    actualSlaveNum:USINT; 
    bError : BOOL;
END_VAR
名称 类型 描述
actualSlaveNum USINT 实际从站数量
bError BOOL 函数执行是否报错

2.3 ST_DNetSlaveStatus

字段 类型 描述
mac_id USINT 从站Mac地址
unsupported_connection BOOL 不支持的连接类型
identityMismatch BOOL 身份不匹配:供应商编码、产品类型、产品编码不一致
invalid_io_size BOOL 无效IO大小
config_error BOOL 其他配置错误
invalid_connection_path BOOL 非法连接路径
io_running BOOL 从站IO通讯成功
set_epr_failed BOOL 设置EPR失败
connect_fail BOOL 从站无法连接
recv_invalid_io_packet BOOL 接收到无效的IO数据包

2.4 示例

PROGRAM PLC_PRG
VAR
    bError: BOOL;
    statuses: ARRAY[0..63] OF ST_DNetSlaveStatus;
    uActualSlaveNum: UINT;
END_VAR

GetAllSlaveStatus(pStatus:=ADR(statuses),cbBufLen:=SIZEOF(statuses[0])*63,actualSlaveNum=>uActualSlaveNum, bError=>bError)